import axios from 'axios';
import { Toast } from 'antd-mobile';

// 创建 axios 实例
const instance = axios.create({
  // Vite 代理会处理跨域，这里可以直接写 API 的基本路径
  baseURL: '/api',
  timeout: 10000, // 请求超时时间
});

// 请求拦截器 - 添加 token
instance.interceptors.request.use(
  config => {
    // 从 localStorage 获取 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  // 响应成功
  response => {
    // 后端返回的数据结构通常是 { success: boolean, data: any, message: string }
    const res = response.data;

    // 如果业务逻辑上不成功，则提示错误
    if (res.success === false) {
      Toast.show({
        icon: 'fail',
        content: res.message || 'Error',
      });
      return Promise.reject(new Error(res.message || 'Error'));
    }
    
    // 业务逻辑成功，直接返回数据部分
    return res.data;
  },
  // 响应失败
  error => {
    console.error('Request Error:', error);
    Toast.show({
      icon: 'fail',
      content: error.message || '网络请求失败',
    });
    return Promise.reject(error);
  }
);

export default instance;
